#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
typedef pair<int, int> PII;
const int N = 100010;
int n;
vector<PII> segs;             // 存储每一段的起点和终点
void merge(vector<PII> &segs) // 合并
{
    vector<PII> res;                // 存放合并后的段
    sort(segs.begin(), segs.end()); // 排序
    int st = -2e9, ed = -2e9;       // 左右两端点
    for (auto seg : segs)
    {
        if (ed < seg.first) // 新段的左边界比原右边界大，两段不相交
        {
            if (st != -2e9)
                res.push_back({st, ed});     // 左边界非空（一般只对第一次用），存储
            st = seg.first, ed = seg.second; // st和ed变为新边界
        }
        else
            ed = max(ed, seg.second); // 右边界扩容或不变
    }
    if (st != -2e9)
        res.push_back({st, ed}); // 装入最后一个点
    segs = res;                  // 放置合并后的段
}
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++) // 输入每一段
    {
        int l, r;
        cin >> l >> r;
        segs.push_back({l, r});
    }
    merge(segs);
    cout << segs.size() << endl;
    return 0;
}